home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / GEM / VDIRASTE.I < prev    next >
Encoding:
Modula Implementation  |  1993-10-29  |  4.1 KB  |  110 lines

  1. IMPLEMENTATION MODULE VDIRasters;
  2. (*$L-, N+, Y+*)
  3.  
  4.  
  5. (*  MEGAMAX MODULA 2 GEM-Library :  Die VDI Rasterfunktionen
  6.  *
  7.  *  Autor: Manuel Chakravarty           Erstellt :  04.11.87
  8.  *
  9.  *  Version   2.2     V#0019
  10.  *)
  11.  
  12. (*  04.11.87    | Übernahme aus 'GEMBase' und 'GEMExt'
  13.  *  02.04.90    | Anpassung an public arrays
  14.  *  20.11.91    | PixelState geht nun ('set' wurde auf Stack vergessen)
  15.  *)
  16.  
  17.  
  18. FROM    SYSTEM          IMPORT ASSEMBLER;
  19.  
  20. FROM    GrafBase        IMPORT Point, Rectangle, MemFormDef, PtrMemFormDef,
  21.                                WritingMode, BitOperation;
  22.  
  23. IMPORT  GEMShare;
  24.  
  25. FROM    GEMEnv          IMPORT DeviceHandle;
  26.  
  27. (*$I GEMOPS.ICL *)
  28.  
  29.  
  30. PROCEDURE CopyOpaque(handle:DeviceHandle; sourceMem,destMem:PtrMemFormDef;
  31.                      sourceFrame,destFrame:Rectangle;mode:BitOperation);
  32.                     
  33. BEGIN
  34.   ASSEMBLER
  35.     MOVE.L      pubs,A0
  36.     MOVE.W      -(A3),pubArrays.vINTIN(A0)      ; 'mode' -> vINTIN(0)
  37.     LEA         pubArrays.PTSIN+$10(A0),A1     ; frames -> ptsin(0)-(7)
  38.     JSR         getCalcedFrame
  39.     JSR         getCalcedFrame
  40.     MOVE.L      our_cb,A0
  41.     MOVE.L      -(A3),cb.V_CONTRL.multi3(A0)    ; ADR(destMem) -> V_CONTRL.m3
  42.     MOVE.L      -(A3),cb.V_CONTRL.multi1(A0)    ; ADR(sourceMem) -> V_CONTRL.m1
  43.     MOVE.W      #COPY_RASTER_OPAQUE,(A3)+
  44.     CLR.W       (A3)+
  45.     JSR         vdi_if
  46.   END;
  47. END CopyOpaque;
  48.  
  49. PROCEDURE CopyTrans(handle:DeviceHandle;sourceMem,destMem:PtrMemFormDef;
  50.                     sourceFrame,destFrame:Rectangle;mode:WritingMode;
  51.                     setCol,unsetCol:CARDINAL);
  52.                     
  53. BEGIN
  54.   ASSEMBLER
  55.     MOVE.L      pubs,A0
  56.     MOVE.L      -(A3),pubArrays.vINTIN+2(A0)    ; setCol, unsetCol -> vINTIN(1)+(2)
  57.     MOVE.W      -(A3),D0
  58.     ADDQ.W      #1,D0
  59.     MOVE.W      D0,pubArrays.vINTIN(A0)         ; adjusted 'mode' -> vINTIN(0)
  60.     LEA         pubArrays.PTSIN+$10(A0),A1     ; frames -> ptsin(0)-(7)
  61.     JSR         getCalcedFrame
  62.     JSR         getCalcedFrame
  63.     MOVE.L      our_cb,A0
  64.     MOVE.L      -(A3),cb.V_CONTRL.multi3(A0)    ; ADR(destMem) -> V_CONTRL.m3
  65.     MOVE.L      -(A3),cb.V_CONTRL.multi1(A0)    ; ADR(sourceMem) -> V_CONTRL.m1
  66.     MOVE.W      #COPY_RASTER_TRANSP,(A3)+
  67.     CLR.W       (A3)+
  68.     JSR         vdi_if
  69.   END;
  70. END CopyTrans;
  71.  
  72. PROCEDURE TransformForm(handle:DeviceHandle;VAR sourceMem,destMem:MemFormDef);
  73.  
  74. BEGIN
  75.   ASSEMBLER
  76.     MOVE.L      our_cb,A0
  77.     MOVE.L      -(A3),cb.V_CONTRL.multi3(A0)    ; ADR(destMem) -> V_CONTRL.m3
  78.     MOVE.L      -(A3),cb.V_CONTRL.multi1(A0)    ; ADR(sourceMem) -> V_CONTRL.m1
  79.     MOVE.W      #TRANSFORM_FORM,(A3)+
  80.     CLR.W       (A3)+
  81.     JSR         vdi_if
  82.   END;
  83. END TransformForm;
  84.  
  85. PROCEDURE PixelState (handle:DeviceHandle; toTest:Point;
  86.                       VAR color:CARDINAL; VAR set:BOOLEAN);
  87.                      
  88. BEGIN
  89.   ASSEMBLER
  90.     MOVE.L      -(A3),-(A7)             ; save ADR(set)
  91.     MOVE.L      -(A3),-(A7)             ; save ADR(color)
  92.     MOVE.L      pubs,A0
  93.     MOVE.L      -(A3),pubArrays.PTSIN(A0)      ; 'toTest' -> ptsin(0)+(1)
  94.     MOVE.W      #GET_PIXEL,(A3)+
  95.     CLR.W       (A3)+
  96.     JSR         vdi_if
  97.     MOVE.L      pubs,A0
  98.     MOVE.L      (A7)+,A1                ; restore ADR(color) -> A1
  99.     MOVE.L      (A7)+,A2                ; restore ADR(set) -> A2
  100.     TST.W       pubArrays.vINTOUT(A0)
  101.     SNE         D0
  102.     ANDI        #1,D0
  103.     MOVE        D0,(A2)                     ; intout(0) -> set (set/unset)
  104.     MOVE.W      pubArrays.vINTOUT+2(A0),(A1) ; intout(1) -> color
  105.   END;
  106. END PixelState;
  107.  
  108. END VDIRasters.
  109. (* $FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$000004C9$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68E$FFF8B68Eü$00000182T.......T.......T.......T.......T.......T.......T.......T.......T.......T.......$00000C7D$FFEAED2A$FFEAED2A$00000CC6$FFEAED2A$FFEAED2A$FFEAED2A$FFEAED2A$FFEAED2A$FFEAED2A$FFEAED2A$00000C8F$00000CD9$FFEAED2A$00000CDD$00000182ÇÇâ*)
  110.